007计算机不会做加法

与: 有一个不为1就不为1

或: 有一个为1就为1

异或: 相同为0不同为1

非: 0就是1,1就是0 (单目运算)

左移: 高位丢弃,低位补0

shl(<<)1101 1000   左移两位:0110 0000

右移: 各二进位全部右移若干位,低位丢弃,高位补0或者补符号位

shr 1101 0101 ==> 0011 0101
sar 1101 0101 ==> 1111 0101

原文地址:https://www.cnblogs.com/xeclass/p/12585181.html

时间: 2024-11-12 02:47:02

007计算机不会做加法的相关文章

计算机不会做加法(位运算)

之前还有一个计算机的原码反码补码,这些比较简单 ,大家可以自行了解 不过要掌握一个思路 拿到一个二进制数据时    拿到数据(二进制)———>  搞清楚时以什么方式编码(视频还是txt)——————>根据不用方式的编码规则编码 一. 计算机的运算--(位运算) 二.为什么要学习位运算?? 三.位运算 1.与运算 2.或运算 3.异或运算 4.非运算(取反) 5.左移动(相对简单) 6.右移 在汇编里面右移动 补0就用shr 右移动 补符号位就用sar 在c语言里面补0和补符号位用的都是>

用CIL写程序:写个函数做加法

前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点探索它,掌握它的欲望.那么小匹夫就继续扯一扯CIL,接下来的几篇文章也都以上一篇文章中的那个CIL实现的Hello Wolrd程序为基础,继续通过写CIL代码实现一些功能的方式来和各位探讨交流,同时也加深自己对CIL的掌握和印象. 人生就是做加法 "我的肩上搭着她得衣裳,我嗅着她留在衣服上的体香..

【剑指offer】不用加减乘除做加法

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27966641 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000). 输出: 对应每个测试案例,输出m+n的值. 样例输入: 3 4 7 9 样例输出: 7 16 思路: 1.先将各bit位相加,不计进位,这一步可以用m^n实现 2.加上进位

循序渐进做项目系列:最简单的C/S程序——让服务器来做加法

(本文是专门针对未接触过C/S开发的初学者而写的,C/S开发高手请自动忽略啊~~) 还在写“Hello world!”式的单机程序吗?还在各种拖控件吗?是否自己都觉得有点low呢?来个质的飞跃吧!看看怎么让服务器帮咱做加法! 所谓C/S程序就是Client/Server程序,自然既包含一个Client项目,又包含一个Server项目.所以先来新建解决方案及项目. 一·开端 1.新建解决方案及项目 (针对初学者,已掌握者跳过) 1.新建一个Windows窗体项目,项目命名为Server. 2.右击

不用+、-、&#215;、&#247;数字运算符做加法

1)使用位运算,sum1=a^b 相当于不进位的加法,因为0+1=1.1+0=1.1+1=0(因为不进位)0+0=0 正好是或运算 2)sum2=(a&b)<<1,相当于算进位的数,因为只有1+1时进位 3)结果就是sum1+sum2,当然如果这个加法还需要进位就执行第四步 4)重复上面的过程一直到进位数(a&b)<<1为零,也就是不需要进位为止 #include<iostream> #include<stdio.h> using names

编程算法 - 不用加减乘除做加法 代码(C)

不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四则运算符号. 不能使用运算符号, 使用位运算, 第一步异或运算选位, 第二步与运算进位. 代码: /* * main.cpp * * Created on: 2014.7.13 * Author: Spike */ #include <iostream> #include <list>

剑指Offer面试题47(Java版):不用加减乘除做加法

题目:写一个函数,求两个整数之和,要求在函数体内不得适用+,-,* ,./  四则运算符号 面试的时候被问道这个问题,首先我们分析人们是如何进行十进制的加法的,比如是如何得出5+17=22的结果的,实际上,我们可以分三步进行:第一步只做各位相加不进位,此时相加的结果是12,第二步做进位,5+7中有进位,进位的值为10:第三步,把前面的两个结果加起来12+10的结果是22,刚好5+17=22 我们一直在想,求两个树之和四则运算都不能用,还能用什么?对数字做运算,除了四则运算之外,也就只剩下位运算了

剑指Offer解题报告(Java版)——不用加减乘除做加法 47

? ? 引言 ? ? 一般这种不能用四则运算的题都只有用位运算来做,目的是加强大家对计算机计算的理解,真是有点扯淡呢 ? ? 解决问题 ? ? 首先我们得思考计算机是怎样做加法的呢,比如3加4,如果转换成二进制是0011和0100,加起来是7,也就是0111,相当于是两个二进制的异或运算 ? ? 但是我们再举一个例子就是4加4,会发现,两个二进制是0100和0100,异或运算的话结果为0000,但是我们想要的是1000,这是因为异或运算没有考虑到进位的问题,看来我们还要用一个运算去考虑进位的问题

剑指offer (47) 不用加减乘除做加法

题目:求两个整数之和,要求不得使用 加减乘除四则运算 题解分析:加减乘除都不能用,还要进行各种运算,必然想到 位运算 十进制加法: 5 + 17 = 22 step1. 各位相加,不考虑进位,即舍弃进位,结果为 12 (5 + 7 = 12舍弃进位) step2. 做进位 (5 + 7 = 12 > 9 有进位) 进位为10 step3. 两步结果相加 12 + 10 = 22 二进制加法:5 + 17 = 22 即 101 + 10001 step1. 各位相加,不考虑进位,即舍弃进位,结果为