c按位取反运算符_取反和按位取反

c按位取反运算符_取反和按位取反介绍二进制是计算机运行和存储数据的基础,按位取反(以下称“取反”)也就是基于二进制进行的一个操作。所不同的是,在完成按位取反之后,还需要转换为“原码”。(人类可能无法接受二进制表示而更倾向于十进制)正数取反取反就是将二进制表示的数字中的0变为1,1变为0。其实原理很简单,但我一开始很难理解首先将数据转换为二进制表示(这里用整数),以10为例子。1.10用二进制表示就是0000101

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

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

介绍

二进制是计算机运行和存储数据的基础,按位取反(以下称“取反”)也就是基于二进制进行的一个操作。所不同的是,在完成按位取反之后,还需要转换为“原码”。(人类可能无法接受二进制表示而更倾向于十进制)
c按位取反运算符_取反和按位取反

正数取反

取反就是将二进制表示的数字中的0变为1, 1变为0。其实原理很简单,但我一开始很难理解首先将数据转换为二进制表示(这里用整数),以10为例子。1.10用二进制表示就是0000 10102.计算补码:(正数的补码与原码相同,而正数的原码就是二进制)结果为0000 1010(补码)3.按位取反:1111 01014.开始把1111 0101转换为原码,从这里开始就要分情况了《1》如果最高位(从左边开始的第一位)为0则表示的就是正数:正数的原码和取反后的数相同。《2》如果最高位为1则表示的就是负数:先将已取反的数减去1,在对差进行取反(注意:保留最高位不变),最后加上一个负号。所以把1111 0101转换为原码后为 1000 1011 由于1表示的负数,所以可以理解为-000 1011 也就是-11了。
c按位取反运算符_取反和按位取反

负数取反

以-10为例1.先将-10取绝对值10, 10的二进制为 0000 10102.将0000 1010用补码表示:(对于负数的补码:将其对应正数的二进制取反后,加1)即为1111 0101+1=1111 01103.将补码按位取反得 0000 10014.将反码转换为原码(参考上一节,步骤4《1》):得 0000 1001所以-10按位取反后为9
c按位取反运算符_取反和按位取反

参考资料

  1. 按位取反的步骤和原理
  2. 补码 – 百度百科
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170465.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • char类型转换成int_char 转int

    char类型转换成int_char 转int字符串“1121“转换成整型1121#include<stdio.h>#include<string.h>voidCharToInt(int*dest,char*src,longlen);intmain(void){unsignedchar*str=”1121″;intvalue,str_len…

    2022年9月1日
    0
  • 什么是ESLint?「建议收藏」

    什么是ESLint?「建议收藏」在我们学习ESLint之前,我们先来了解一下什么是ESLint?什么是ESLint?官网上告诉我们,ESLint是一个用来识别ECMAScript/JavaScript并且按照规则给出报告的代码检测工具,哦,所以我们可以知道,ESLint就是一个工具,而且是一个用来检查代码的工具。代码检查是一种静态的分析,常用于寻找有问题的模式或者代码,并且不依赖于具体的编码风格。对大多数编程语言…

    2022年6月18日
    32
  • 次世代3A游戏开发将飙至1.5亿美元,游戏时长将更短

    次世代3A游戏开发将飙至1.5亿美元,游戏时长将更短即将翻过的这个世代,是大作的时代,涌现了一大批的大作,譬如《荒野大镖客2》、《GTA5》、《巫师3》等游戏。当然也是预算高涨、不断跳票和开发商经常加班加点的时代。随着PS5和XSX即将到来,随之一起的将是有史以来细节最丰富和预算更贵的游戏世界,问题就出现了:游戏行业还会继续痴迷于这么庞大世界的游戏吗?在GameBabLive会议上,SIE前总裁ShawnLayden表达了对次世代游戏开发成本倍增的担忧。他认为次世代3A游戏的开发将不可避免地从今天的8000万美元飙升至1.5亿美元。因此Lay

    2022年6月10日
    74
  • Yarn 安装与使用教程[通俗易懂]

    一、官网指引英文官网:Yarn英文官网中文文档:Yarn中文文档二、Yarn介绍Yarn是Facebook,Google,Exponent和Tilde开发的一款新的JavaScript包管理工具。你可以通过它使用全世界开发者的代码,或者分享自己的代码。代码通过包(package)(或者称为模块(module))的方式来共享。一个包里包含所有需要共享的代码,以及描述包信息的文件,称为package.json。它的优点是更快、更安全、更可靠。它的主要特性有离线模式、确定性

    2022年4月10日
    61
  • QTreeWidget 简介「建议收藏」

    QTreeWidget 简介「建议收藏」版权声明:如有使用转载,请附加出处 https://blog.csdn.net/jia666666/article/details/81668590 QTreeWidgetQTreeWidget类中的常用方法方法描述setColumnWidth(intcolumn,intwidth)将指定列的宽度设置为给定的值Column:…

    2022年10月1日
    1
  • Java之多线程断点下载的实现

    Java之多线程断点下载的实现

    2022年2月1日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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