原码,补码,二进制减法计算_二进制的原码和补码

原码,补码,二进制减法计算_二进制的原码和补码这篇博客从一道题说起,已知x = (1<<31)-3,求x&-x?这里面考察了二进制的减法,减法也就牵涉了原码补码的一些概念。这里进行下梳理。 一。原码,补码概念1.原码就是早期用来表示数字的一种方式。一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码例如:假设机器是32位系统,in…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

这篇博客从一道题说起,

已知 x  = (1<<31)-3,求x&-x?

这里面考察了二进制的减法,减法也就牵涉了原码补码的一些概念。

这里进行下梳理。

 

一。原码,补码概念

1.原码就是早期用来表示数字的一种方式。

一个正数,转换为二进制位就是这个正数的原码。

负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码

例如:假设机器是32位系统,

int类型的 3 的原码是 00000000 00000000 00000000 00000011

对于int类型的-3的原码是00000000 00000000 00000000 00000011高位补1得到10000000 00000000 00000000 00000011

2.反码

正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反

int类型的 3 的反码是 00000000 00000000 00000000 00000011,和原码一样

int类型的-3的反码是11111111 11111111 11111111 11111100

3.补码

正数的补码与原码相同,负数的补码为其原码除符号位外所有位取反(得到反码了),然后最低位加1.

int类型的 3 的补码是 00000000 00000000 00000000 00000011

int类型的 -3 的补码是 11111111 11111111 1111111 11111101

过程:10000000 00000000 00000000 00000011除符号位取反

       -> 11111111 11111111 1111111 11111100 再加1

       -> 11111111 11111111 1111111 11111101

总结来说,求负数补码有两种方法。

(1)正数原码求反+1

(2)负数原码除符号位求反+1

 

二。二进制减法

原码,补码,二进制减法计算_二进制的原码和补码

在运算过程中,从右往左逐位进行计算。 
(1)1-0=1; 
(2)0不够减1,向前借1后加2变成2;2-1=1; 
(3)0在上一步被借1所以减为-1,-1不够减0,向前借一后加2变成1;1-0=1; 
(4)在上一步被借一所以减为0,0不够减1,向前借一后加2变成2;2-1=1; 
(5)在上一步被借一所以减为-1,-1不够减1,向前借一后加2变成1;1-1=0; 
(6)在上一步被借一所以减为0,0-0=0. 
 

三。开头题目

(1) 求1<<31:10000000 0000000 00000000 00000000

(2)减去3: 

   10000000 0000000 00000000 00000000

-00000000 00000000 00000000 00000011

= 01111111 11111111 11111111 11111101 即 x

(3)求x&-x

首先求-x的外码(参考资料3),x原码求反+1,得到10000000 00000000 00000000 00000011

01111111 11111111 11111111 11111101&10000000 00000000 00000000 00000011 = 1(答案)

 

四。参考资料:

1.正数的原码,反码,补码

2.二进制减法

3.计算机负数与正数的按位与操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189671.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • EXCEL出错 8000401a

    EXCEL出错 8000401a
    检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误:8000401a
     
     
     
     
    解决方法:
     

    1:在服务器上安装office的Excel软件.
    2:在”开始”->”运行”中输入dcomcnfg.exe启动”组件服务”
    3:依次双击”组件服务”->”计算机”->”我的电脑”->”DCOM配

  • [C++]-日志记录库SPDLog简介[通俗易懂]

    [C++]-日志记录库SPDLog简介[通俗易懂]文章目录spdlog库日志记录槽sink日志记录器logger输出格式pattern对齐方式截断字符串格式化fmtFormatSpecificationspdlog使用异常处理logger基础用法stdout日志文件日志基本文件循环文件每日文件示例spdlog是一款开源的、快速的日志库。spdlog库spdlog是基于C++11实现的一款纯头文件的日志管理库(git地址:https://github.com/gabime/spdlog,API说明:https://spdlog.docsforge.c

  • myEclipse2018下载及安装详细教程[通俗易懂]

    myEclipse2018下载及安装详细教程[通俗易懂]下载地址:链接:https://pan.baidu.com/s/1aQEZiikOSBzCkbl39ndLYQ提取码:ee9g复制这段内容后打开百度网盘手机App,操作更方便哦。安装:1.想要安装的路径下新建文件夹,双击运行安装包,运行需要一点时间,耐心等待即可;2.安装包运行成功界面,next下一步:同意协议:选择自定义安装路径:等待安装:注意:安装成功先不启动myEclipse!!!不勾选launchMyEclipseCI:…

  • android galley实现画廊效果

    android galley实现画廊效果青春流水指间、每段路,都有即将要来的旅程每颗心,都有值得期待的成分Android之ImageSwitcher,Gallery用法今天在做一个软件界面时用到了ImageSwitcher和Gallery控件,在看API时,感觉上面的例子讲的不是很具体,效率并不高。在这里我就以一个图片浏览功能来具体说明这两个控件的用法。首先看运行效果:在这里图片我用的是API中的图

  • 国内数据集网站_数据网站

    国内数据集网站_数据网站如果你是一个初学者,你每完成一个新项目后自身能力都会有极大的提高,如果你是一个有经验的数据科学专家,你已经知道这里所蕴含的价值。 本文将为您提供一个网站/资源列表,从中你可以使用数据来完成你自己的数据项目,甚至创造你自己的产品。一.如何使用这些资源?如何使用这些数据源是没有限制的,应用和使用只受到您的创造力和实际应用。使用它们最简单的方法是进行数据项目并在网站上发布它们。这不仅能提高你的数…

    2022年10月16日
  • 我在武汉新东方上过的8个老师是谁_武汉新东方学校靠谱吗

    我在武汉新东方上过的8个老师是谁_武汉新东方学校靠谱吗上新东方的总结、感想。对新东方还是有一点留恋的。。。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号